from collections import deque  # BFS用deque实现
import sys
st=input() # 起始状态，字符串
ed=input() # 终止状态
all_st=set() # 记录所有状态的集合
q=deque()

skip=[1,-1,2,-2,3,-3]  # 6种合法跳跃情况，正数空杯往右跳，负数空杯往左挑

q.append([list(st),0])  # 起点入队，把（状态和步数）加进去。把状态转为列表，步数为0
all_st.add(st)  # 所有状态的集合中加入初始状态
while len(q):  # q不为空时
    cst,cstep=q.popleft() # 取出当前状态、当前步数。因为q存进去了状态和步数，所以可以这样写
    for nt in skip:  #遍历下一层
        lcst=cst.copy()  #  跳杯子时需要修改列表元素（*和青蛙的位置），很多层都要基于上一层的结果，所以需要浅复制一下
        p=lcst.index('*') # 找出*的位置
        next_p=p+nt # 找*的下一个位置
        if 0<=next_p<len(cst): # 判断一下边界
            lcst[p],lcst[next_p]=lcst[next_p],lcst[p]  # 交换位置，得到新的状态
            now_step=cstep+1  # 当前步数等于之前步数+1
            new_st=''.join(lcst)  # 下一个新的状态转成字符串
            if new_st==ed: # 如果当前状态就是终点
                print(now_step)  # 打印状态
                sys.exit(0)  # 退出
            if new_st not in all_st: #判重，不能在集合里出现过
                all_st.add(new_st)  # 把新的状态加入集合
                q.append([lcst,now_step])